package com.woniu.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @Author pml
 * @Date 2025/6/19 15:29
 * @Description TODO
 * JSON序列化工具类
 * 统一处理对象与JSON字符串的转换
 * 使用Spring容器中的ObjectMapper，确保配置一致性
 */
@Component
public class JsonUtils {

    private static ObjectMapper objectMapper;

    /**
     * 静态注入ObjectMapper，解决工具类中依赖注入问题
     * 为什么用静态注入？因为工具类方法通常为静态，需要静态访问ObjectMapper
     */
    @Autowired
    public void setObjectMapper(ObjectMapper mapper) {
        JsonUtils.objectMapper = mapper;
    }

    /**
     * 将对象序列化为JSON字符串
     * @param obj 要序列化的对象
     * @return JSON字符串，异常时返回"{}"
     */
    public static String toJson(Object obj) {
        if (obj == null) {
            return "{}";
        }
        try {
            return objectMapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            // 记录序列化异常，但不中断主流程
            e.printStackTrace();
            return "{\"error\":\"序列化失败\"}";
        }
    }
}
